function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
}
// 判断树是不是镜像的
function isSymmetrical(pRoot)
{
    // write code here
    // 二叉树 是否对称 可以转化为 左右子树是否镜像
    // 将左右子树看成两棵树 数A 和树B  
    // 需要写一个函数 当参数为两个树的时候 判断两个树是否镜像
    // 镜像的树的特点 除去根节点后 两个镜像的树 他的左右子树也是镜像的
    // 需要判断 1. A.val === B.val 2.A.left B.right 是否是镜像的 3. A,right 和 B.left 是不是镜像的 这些条件全部满足才可以说明是镜像的
    // 定义一个函数 判断 两棵树是不是镜像的
    const isMirror = (A,B)=>{
        // 1. 判断 A/B两个根节点是不是一样的
        // 如果都是空的 说明是镜像的
        if(A === null && B === null) return true
        // 有一个是null 说明不是镜像的
        if(A === null || B ===  null) return false
        // /如果A的值和B 的值不相等 说明 是false
        if(A.val !== B.val) return false
        // 递归判断 A的左子树和B的右子树是否是镜像 以及 A的右子树 和 B的左子树是否是镜像 两个都为true 才可以说是镜像的
        return isMirror(A.left,B.right) && isMirror(A.right,B.left)
    }
    // 返回左右子树是否是镜像的
    if(pRoot){
        return isMirror(pRoot.left,pRoot.right)
    }else {
        // 根节点为null 也是镜像的
        return true
    }
}
module.exports = {
    isSymmetrical : isSymmetrical
};